#include <signal.h>
#include <stdio.h>
#include <unistd.h>

void printpend(sigset_t* set)
{
    for (int i = 31; i >= 1; i--)
    {
        if (sigismember(set, i))
        {
            printf("1");
        }
        else
        {
            printf("0");
        }
    }
    printf("\n");
}

int main()
{
    //1.准备信号,屏蔽2号
    sigset_t set, ost; //栈上的,用户区
    sigemptyset(&set);
    sigemptyset(&ost);

    sigaddset(&set, 2);

    //捕捉信号

    //设置进内核
    sigprocmask(SIG_BLOCK, &set, &ost);

    //打印pending
    sigset_t pending;
    while (true)
    {
        //获取pend
        int n = sigpending(&pending);
        if (n < 0)
            continue; 
            //解除屏蔽
        //sigprocmask(SIG_SETMASK, &ost, nullptr);
        printpend(&pending);
        sleep(1);
    }

    return 0;
}